//https://www.cnblogs.com/baiihcy/p/5414875.html
#include <stdio.h>
#include <string.h>

%%{
    machine foo; #FSM 名称

    #定义动作
    action res_true { 
        res2=1;
    }
    action res_false {
        res2=0;    
    }
    action res_err {
        res2=-1;
    }

    #FSM 起点
    main := ( 'true'0 @res_true | 'false'0 @res_false | any @res_err); 

    #写入 FSM 数据
    write data; 
}%%


int GetRes(char *pbuf)
{
    int res2;
    char *p=pbuf; //初始化 p 指向需要做 FSM 处理的数组起始地址
    char *pe=p+strlen(pbuf)+1; //初始化 pe 指向 p 的结束地址
    int cs; // cs 用来保存 FSM 运行中状态

    //写入初始化代码
    %%write init;

    //写入执行代码
    %%write exec;
    return res2;
}

int main()
{
    int cs4;
    char buf[256];
    while (scanf("%s",buf)) {
        printf("res=%d\n",GetRes(buf));
    }
    return 0;
}
